﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace HWR_Ants.Classes
{
    [Serializable]
    public class Options
    {
        private int antsCounter;
        private int cityCounter;
        private int iterationCounter;
        private Params parameter;
        private string stopp;

        public int AntsCounter
        {
            get { return antsCounter; }
            set { antsCounter = value; }
        }

        public int CityCounter
        {
            get { return cityCounter; }
            set { cityCounter = value; }
        }

        public int IterationCounter
        {
            get { return iterationCounter; }
            set { iterationCounter = value; }
        }

        public string Stopp
        {
            get { return stopp; }
            set { stopp = value; }
        }

        public Params Parameter
        {
            get { return parameter; }
            set { parameter = value; }
        }

        public Options()
        {
            antsCounter = 1;
            cityCounter = 1;
            iterationCounter = 1;
            parameter = new Params(1, 1, 1, 1, 1);
            stopp = "Iteration";
        }
    }

    public class Params 
    {
        // Pheromon Parameter
        private int alpha;
        // Lokale Information
        private int beta;
        // Verdunstungsfaktor
        private double rho;
        // tau 0 initialer Pheromonwert
        private int tau;
        // Pheromonupdate
        private int q;

        public Params()
        {
            alpha = 0;
            beta = 0;
            rho = 0;
            tau = 0;
            alpha = 0;
        }

        public Params(int p, int l, int v, int i, int pu)
        {
            alpha = p;
            beta = l;
            rho = v;
            tau = i;
            q = pu;
        }

        public int Alpha
        {
            get { return alpha; }
            set { alpha = value; }
        }

        public int Beta
        {
            get { return beta; }
            set { beta = value; }
        }

        public double Rho
        {
            get { return rho; }
            set { rho = value; }
        }

        public int Tau
        {
            get { return tau; }
            set { tau = value; }
        }

        public int Q
        {
            get { return q; }
            set { q = value; }
        }

    }
}
